package com.example.houselease.service;

import com.example.houselease.pojo.dto.admin.RoleAddNewDTO;
import com.example.houselease.pojo.dto.admin.PermissionDTO;
import com.example.houselease.pojo.dto.admin.RoleUpdateDTO;
import com.example.houselease.pojo.vo.RoleDetailVO;
import com.example.houselease.pojo.vo.RoleListVO;
import com.example.houselease.pojo.vo.RolePerDetailVO;

import java.util.List;

/**
 * 角色 service
 * @author sf
 * @version 0.0.1
 * */
public interface IRoleService {

    /**
     * 角色列表
     * @return 数据
     * */
    List<RoleListVO> list();

    /**
     * 添加角色
     * @param roleAddNewDTO 角色数据
     * */
    void add(RoleAddNewDTO roleAddNewDTO);

    /**
     * 检测角色名称是否已经存在
     * @param name 角色名称
     * */
    void nameIsAlready(String name);

    /**
     * 注册角色权限
     * @param roleId 角色id
     * @param permissionIds 权限信息
     * */
    void regPer(Long roleId, List<Long> permissionIds);

    /**
     * 获取角色的权限id详情
     * @param id 数据id
     * @return 数据
     * */
    List<Long> getRolePerById(Long id);

    /**
     * 删除角色
     * @param id 角色id
     * */
    void deleteById(Long id);

    RoleDetailVO getRoleDetail(Long id);

    /**
     * 启用角色
     * @param id 角色id
     * */
    void enable(Long id);

    /**
     * 禁用角色
     * @param id 角色id
     * */
    void disable(Long id);

    /**
     * 更新角色
     * @param id 管理员id
     * @param roleUpdateDTO 管理员数据
     * */
    void update(Long id, RoleUpdateDTO roleUpdateDTO);
}
